#include <ed_core/tests/modifiable.h>
#include <ed_core/tests/modifier.h>

using namespace ed_core;

Modifiable::Modifiable()
{
}

Modifiable::~Modifiable()
{
}

bool Modifiable::hasTag(const QString &t) const
{
  return _tags.contains(t);
}

bool Modifiable::hasTags(const QStringList &t) const
{
  foreach(const QString& tkn, t)
  {
    if (!hasTag(tkn)) return false;
  }
  return true;
}

void Modifiable::addTag(const QString &t)
{
  _tags.insert(t);
}

bool Modifiable::removeTag(const QString &t)
{
  return _tags.remove(t);
}

void Modifiable::apply(Modifier *mod, bool force)
{
  if (force || mod->appliesTo(this)) applyModifier(mod);
}
